package exception;

/**
 * 异常处理机制中的try-catch
 * 语法:
 * try{
 *     可能出现异常的代码片段
 * }catch(XXXException e){
 *     当try中出现XXXException异常后的解决办法
 * }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了...");
        try {
//            String str = null;
//            String str = "";
            String str = "a";
            //当JVM执行程序遇到一个异常时就会实例化该异常并将其抛出
            System.out.println(str.length());

            System.out.println(str.charAt(0));

            System.out.println(Integer.parseInt(str));
            //try语句块中报错语句下面的内容都不会被执行!
            System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!");

//        }catch(NullPointerException e){
//            //try中出现空指针的解决办法，实际开发要结合需求来进行处理。
//            System.out.println("出现了空指针!");
//        //可以定义多个catch来捕获不同的异常并进行对应的处理
//        }catch(StringIndexOutOfBoundsException e){
//            System.out.println("出现了字符串的下标越界");

            //当多个异常的解决办法相同时，可以使用同一个catch。
        }catch(NullPointerException | StringIndexOutOfBoundsException e){
            System.out.println("出现空指针或下标越界的统一解决办法!");

            //可以在最后一个catch处捕获Exception,避免因为一个未捕获的异常导致程序中断
        }catch(Exception e){
            System.out.println("反正就是出了个错!");
        }


        System.out.println("程序结束了!");
    }
}
